Default arguments (Playground)
Description
There are several overloads of 'foo()' in Java:
Javaで実装した
foo()
のオーバーロードがいくつかあります。
public String foo(String name, int number, boolean toUpperCase) {
return (toUpperCase ? name.toUpperCase() : name) + number;
}
public String foo(String name, int number) {
return foo(name, number, false);
}
public String foo(String name, boolean toUpperCase) {
return foo(name, 42, toUpperCase);
}
public String foo(String name) {
return foo(name, 42);
}
All these Java overloads can be replaced with one function in Kotlin. Change the declaration of the function foo in a way that makes the code using foo compile. Use default and named arguments.
Kotlinでは、これらを一つの関数に置き換えることができます。
foo
を使用するコードがコンパイルできるように、foo
関数の宣言を変更してください。デフォルト引数および名前付き引数 を使用してください。
Code
fun foo(name: String, number: Int = 42, toUpperCase: Boolean = false) =
(if (toUpperCase) name.toUpperCase() else name) + number
fun useFoo() = listOf(
foo("a"),
foo("b", number = 1),
foo("c", toUpperCase = true),
foo(name = "d", number = 2, toUpperCase = true)
)
Memo
- デフォルト引数
- 呼び出し時に引数を省略できる。省略した場合はデフォルト値が使用される。
- Javaのように引数の数だけのオーバーロードをする必要がない。
デフォルト引数は、オーバーロード数を減らし、コードの可読性を上げることができる。
名前付き引数と同様、Javaにはない機能であり、とても便利。